CloudWatch LogsメトリクスフィルターでWバイト文字(日本語)のアラーム通知
CloudWatch LogsメトリクスフィルターでWバイト文字(日本語)を指定することが可能です。ドキュメントの通りですが、アルファベット文字以外を利用する際は、二重引用符("")で囲む必要があります。
アルファベット文字およびアンダースコア以外の文字を含むメトリクスフィルターの語句は二重引用符 ("") で囲む必要があります。
本エントリでは、CloudWatch Alarm含むメトリクスフィルターの作成手順と、実際にWバイト文字をロギングしてアラーム通知(メール)を実施してみたいと思います。ここでは、CloudWatch LogsへのロギングにLambda Functionを利用します。
構成
Lambda Function
CloudWatch LogsにロギングするためのLambda Functionを作成します。ここではランタイムにPython 3.8を利用しました。ロギングする文言は任意です。ここでは、以下のコードでLambda Functionを作成しました。
import logging logger = logging.getLogger() def lambda_handler(event, context): logger.error('検索処理でエラーが発生しました') logger.error('データが存在しません')
CloudWatch Logsへログ出力するためにテスト実行しました。
処理が終わるとCloudWatch LogsにLambda Functionのロググループ(/aws/lambda/<Lambda Function名>
)が作成されます。
ログを確認するとLambda Functionで出力したメッセージがロギングされています。
CloudWatch
CloudWatch Logsメトリクスフィルターでは、定義したフィルターパターンに合致すると、CloudWatchメトリクスの値が増分されます。該当のメトリクスに対してCloudWatch Alarmを設定することで、キーワード監視の仕組みが実現できます。メトリクスフィルターを設定したいロググループ(ここでは/aws/lambda/testCloudWatchLogsFilter
)を選択し、メトリクスフィルターをクリックします。
「メトリクスフィルターの追加」をクリックします。
フィルターパターンに検出したい文字を二重引用符で囲んで設定します。ここでは、Wバイト文字をフィルターパターンにしたいので「"エラー"
」を指定しました。
こちらのフィルタパターンにより、Lambda Functionにて出力した「検索処理でエラーが発生しました」に合致する想定です。「パターンのテスト」をクリックして確認します。
想定どおり該当のメッセージがパターンに合致しました。CloudWatchメトリクスを作成しますので「メトリクスの割当」をクリックします。
任意の値でメトリクスフィルター名および、メトリクス名を指定します。「フィルターの作成」をクリックします。
作成したメトリクスに対して、CloudWatch Alarmの設定をしますので「アラームの作成」をクリックします。
メトリクスの条件指定では以下を設定しました。この後設定します、アクション(ここではSNS)のトリガーは、CloudWatch Alarmの状態が変わり、指定した期間にわたって持続している必要があります。
ここでは期間を1分にしていますが、1分未満とする場合は高解像度メトリクスとなり、より迅速に状態を把握できますが、料金に影響がでてきますので要件にあわせ設定ください。
CloudWatch Alarmの状態が変化したときにSNSトピックを介して通知されるよう、以下アクションの設定を行いました。
任意のAlarm名を指定します。
指定内容を確認し、問題なければ「アラームの作成」をクリックします。
CloudWatch Alarmが作成されました。
動作確認
動作確認を行います。先に作成したCloudWatch LogsにロギングするLambda Functionsをテスト実行します。
CloudWatch Logsのフィルタパターンに合致するメッセージがロギングされました。
これにより、LambdaErrorMetrics
が増分され、CloudWatch Alarmの条件(1 > 0)を満たし、Alamの状態が変わりました。
Alarmに指定したSNSに、イベントが発行されメール通知が行われました。通知される内容はCloudWatch Alarmの状態変化といった内容になります。そのため、CloudWatch Logsにロギングされたメッセージについてはメールからは確認できませんのご留意ください。
さいごに
今回は単一語句("エラー"
)で動作確認などを行いましたが、複数語句など条件を指定することも可能ですので、要件にあわせて設定してください。